package com.starchen.optimalselection.admin.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.starchen.optimalselection.admin.model.AdminUser;
import com.starchen.optimalselection.admin.model.form.LoginForm;
import com.starchen.optimalselection.admin.model.vo.LoginVo;
import com.starchen.optimalselection.common.model.QueryParamsForm;
import com.starchen.optimalselection.common.model.ResultPage;

import java.util.Map;

/**
 * 用户表 服务类
 *
 * @author daxilong
 * @since 2022-09-28
 */
public interface AdminUserService extends IService<AdminUser> {

    //用户列表
    ResultPage selectPage(QueryParamsForm sysUserQueryVo);

    /**
     * 根据username获取 user信息
     * @param username
     * @return
     */
    AdminUser getUserInfoByUserName(String username);

    //根据用户名称获取用户信息（基本信息 和 菜单权限 和 按钮权限数据）
    Map<String, Object> getUserInfo(String username);

    /**
     * 登录功能
     * @param loginVo 用户名 和密码
     * @return 生成的JWT的token
     */
    LoginVo login(LoginForm loginVo, String ipAddress);

    /**
     * 获取用户信息
     */
    AdminUser findUserByUsername(String username);

    /**
     * 登出功能
     * @param username 用户名
     */
    void logout(String username);

}
